package com.delio.client.produccion.pedidos;

import java.util.ArrayList;
import java.util.List;

import com.delio.client.idioma.DelioConstants;
import com.delio.client.produccion.detallenotaingresos.FichaProduccionForm;
import com.delio.client.produccion.detallepedidos.DetallePedidos;
import com.delio.client.produccion.ordenproducciones.OrdenProduccionForm;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.Style.SelectionMode;
import com.extjs.gxt.ui.client.data.BeanModel;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.GridEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.grid.CheckBoxSelectionModel;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.filters.GridFilters;
import com.extjs.gxt.ui.client.widget.grid.filters.StringFilter;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.client.GWT;

public class SearchPedidoFPForm extends Dialog{
	private DelioConstants x = GWT.create(DelioConstants.class);
	ToolBar toolBar,toolBar1;
	ContentPanel cpi,cpg;
	BorderLayoutData center,nor,c,cen,cg;
	private BeanModel selectedModel;
	ModelData selectedModel1;
	Grid<BeanModel> grid;
	Grid<ModelData> grid1;
	Button btnEnviar;
	String codPedido=null,nombreDetPedido,artdetallepedido;
	Integer detallepedido_id,pedido_id,artdetallepedido_id;
	Double cantidaddetallepedido;
	public static FichaProduccionForm fpf_concatPDP;
	
	public SearchPedidoFPForm(){
	
	 setBodyBorder(false);  
	 setHeading("Detalle Pedido");  
	 setWidth(850);  
	 setHeight(550);
	 setIconStyle("images/icons/search_lupa.png");
	 setModal(true);

	 btnEnviar = new Button("Enviar");
	 btnEnviar.addSelectionListener(new SelectionListener<ButtonEvent>(){
	    public void componentSelected(ButtonEvent ce){
	      if(validarIds()){
	    	  fpf_concatPDP.detpedido.setValue(nombreDetPedido);
	    	  fpf_concatPDP.iddetpedido=detallepedido_id;
	    	  //fpf_concatPDP.receta.setValue(artdetallepedido);
	    	  //fpf_concatPDP.cantidad.setValue(cantidaddetallepedido);
	    	  fpf_concatPDP.idartdetallepedido = artdetallepedido_id;
	      	hide();
	      }
	    }
	  });
	 
	 setButtons("");
	 addButton(btnEnviar);
     setFrame(true);

	 setHeaderVisible(true);
	 setLayout(new BorderLayout());
	 Pedidos.getPaginate();
     DetallePedidos.getPaginate();
	    	    	   	    
   
	 center  = new BorderLayoutData(LayoutRegion.CENTER);
	 center.setMargins(new Margins(0));
	 center.setCollapsible(true);
	    
     nor  = new BorderLayoutData(LayoutRegion.NORTH,300);
	 nor.setMargins(new Margins(0,3,3,3));
		 
	 cpi = new ContentPanel();
	 cpi.setHeading("Listado de Pedidos");
	 cpi.setIconStyle("images/icons/table.png");
	 cpi.setLayout(new BorderLayout());
		  
     c = new BorderLayoutData(LayoutRegion.CENTER);  
		 		    
	 cen   = new BorderLayoutData(LayoutRegion.CENTER);
	 cen.setMargins(new Margins(3));
		    
	 cpg = new ContentPanel();
	 cpg.setHeading("Listado de Insumos del Pedido");
	 cpg.setIconStyle("images/icons/table.png");
	 cpg.setLayout(new BorderLayout());
			
	 cg = new BorderLayoutData(LayoutRegion.CENTER,100);
		    
	 final PagingToolBar toolBarPag = new PagingToolBar(10);
     toolBarPag.bind(Pedidos.loader);
      
      List<ColumnConfig> conf = new ArrayList<ColumnConfig>();
      CheckBoxSelectionModel<BeanModel> sm = new CheckBoxSelectionModel<BeanModel>();
  
      conf.add(sm.getColumn()); 
      ColumnConfig col  = new ColumnConfig("nropedido",x.codigopedido(),100);
	    conf.add(col);
	    col  = new ColumnConfig("razonsocial",x.clientepedido(),100);
	    conf.add(col);
	    col  = new ColumnConfig("direccion",x.direccioncliente(),100);
	    conf.add(col);
	    col  = new ColumnConfig("ruc",x.ruc(),100);
	    conf.add(col);
	    col  = new ColumnConfig("fecha",x.fecha(),100);
	    conf.add(col);
	    col  = new ColumnConfig("epdescripcion",x.descripcion(),100);
	    conf.add(col);
	    col  = new ColumnConfig("observaciones",x.observacion(),100);
	    conf.add(col);
	    col  = new ColumnConfig("prdescripcion",x.prioridad(),100);
	    conf.add(col);
	    
	    final ColumnModel cm = new ColumnModel(conf);
	    
	  grid = new Grid<BeanModel>(Pedidos.store, cm);  
      grid.addListener(Events.Attach, new Listener<GridEvent<BeanModel>>() {  
      public void handleEvent(GridEvent<BeanModel> be) {  
      	  Pedidos.loader.load(0, 10);  
        }  
      }); 
      sm.setSelectionMode(SelectionMode.SINGLE);
      grid.setSelectionModel(sm);
      grid.getSelectionModel().addListener(Events.SelectionChange,
         new Listener<SelectionChangedEvent<BeanModel>>() {
			@Override
			public void handleEvent(SelectionChangedEvent<BeanModel> be) {		
  		   if(be.getSelection().size() == 1) {
	          selectedModel = be.getSelectedItem();
	          pedido_id = Integer.parseInt(selectedModel.get("id").toString());
	          codPedido = selectedModel.get("nropedido").toString();
	          DetallePedidos.pedido_id = Integer.parseInt(selectedModel.get("id").toString());
	          System.out.println("codPedido "+codPedido);
	          DetallePedidos.loader.load();
           }
  		   if(be.getSelection().size()==0){
  			  DetallePedidos.store.removeAll();
             }
			}
        });
      
      grid.setLoadMask(true);  
      grid.setBorders(true);       
      GridFilters filters = new GridFilters();
      StringFilter clienteFilter = new StringFilter("cliente");        
      StringFilter direccionclienteFilter = new StringFilter("direccioncliente");
      StringFilter nropedidoFilter = new StringFilter("nropedido");
      StringFilter fechaFilter = new StringFilter("fecha");
      StringFilter estadopedidoFilter = new StringFilter("epdescripcion");
      StringFilter observacionesFilter = new StringFilter("observaciones");
      StringFilter prioridadFilter = new StringFilter("prdescripcion");
        
      filters.addFilter(clienteFilter);        
      filters.addFilter(direccionclienteFilter);        
      filters.addFilter(nropedidoFilter);        
      filters.addFilter(fechaFilter);
      filters.addFilter(estadopedidoFilter);
      filters.addFilter(observacionesFilter);
      filters.addFilter(prioridadFilter);
       
      grid.addPlugin(filters);                
      grid.addPlugin(sm);
      final PagingToolBar toolBarPag1 = new PagingToolBar(10);
      toolBarPag1.bind(DetallePedidos.loader);
      
      List<ColumnConfig> conf1 = new ArrayList<ColumnConfig>();
      CheckBoxSelectionModel<ModelData> sm1 = new CheckBoxSelectionModel<ModelData>();
  
      conf1.add(sm1.getColumn()); 
      ColumnConfig col1  = new ColumnConfig("codigo","Codigo",100);
	  conf1.add(col1);
	  col1  = new ColumnConfig("codarticulo","Codigo Articulo",100);
	  conf1.add(col1);
	  col1  = new ColumnConfig("descripcionarticulo","Desc. Articulo",100);
	  conf1.add(col1);
	  col1  = new ColumnConfig("estadodetallepedido","Estado Detalle Pedido",100);
	  conf1.add(col1);
	  col1  = new ColumnConfig("cantidad","Cantidad",100);
	  conf1.add(col1);
	  col1  = new ColumnConfig("observaciones","Observaciones",300);
	  conf1.add(col1);
	   	    
	  final ColumnModel cm1 = new ColumnModel(conf1);
	  grid1 = new Grid<ModelData>(DetallePedidos.store, cm1);  
      grid1.addListener(Events.Attach, new Listener<GridEvent<BeanModel>>() {  
        public void handleEvent(GridEvent<BeanModel> be) {  
      	  DetallePedidos.loader.load(0, 10);  
        }  
      }); 
      sm1.setSelectionMode(SelectionMode.SINGLE);
      grid1.setSelectionModel(sm1);
      grid1.getSelectionModel().addListener(Events.SelectionChange,
         new Listener<SelectionChangedEvent<ModelData>>() {
			@Override
			public void handleEvent(SelectionChangedEvent<ModelData> be) {		
			   if(be.getSelection().size()==1){
	  	           selectedModel1 = be.getSelectedItem();
	  	           DetallePedidos.detallepedido_id = selectedModel1.get("id");
				   detallepedido_id      = Integer.parseInt(selectedModel1.get("id").toString());
				   nombreDetPedido       = selectedModel1.get("nombre").toString();
				   artdetallepedido      = selectedModel1.get("descripcionarticulo").toString();
				   artdetallepedido_id   = Integer.parseInt(selectedModel1.get("articulo_id").toString());
				   cantidaddetallepedido = Double.parseDouble(selectedModel1.get("cantidad").toString());
				}
			}
        });
      
      grid1.setLoadMask(true);  
      grid1.setBorders(true);       
      GridFilters filt    = new GridFilters();
      StringFilter coddp  = new StringFilter("codigo");        
      StringFilter cdart  = new StringFilter("codarticulo");        
      StringFilter desart = new StringFilter("descripcionarticulo");
      StringFilter estdp  = new StringFilter("estadodetallepedido");
      StringFilter cant   = new StringFilter("cantidad");
      StringFilter obser  = new StringFilter("observaciones");
        
      filt.addFilter(coddp);        
      filt.addFilter(cdart);        
      filt.addFilter(desart);        
      filt.addFilter(estdp);        
      filt.addFilter(cant);
      filt.addFilter(obser);
       
      grid1.addPlugin(filt);                
      grid1.addPlugin(sm1);
              
      cpi.add(grid,c);
	  cpi.setBottomComponent(toolBarPag);		
 
	  cpg.add(grid1,cg);
	  cpg.setBottomComponent(toolBarPag1);
	
      add(cpi,nor);
      add(cpg,cen);

	}
	
	
	public boolean validarIds(){
      boolean var=false;
	  if(codPedido!=null)
		var=true;
		
	 return var;	
	}
	
  
}
